<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.org/ui" xmlns:pe="http://primefaces.org/ui/extensions" template="/WEB-INF/include/template/squelette.xhtml">

	<ui:define name="content">
		<p:layout>
			<p:layoutUnit position="north" size="25">
				<h:form>
					<p:outputPanel autoUpdate="true">
						<p:menubar>
							<p:menuitem icon="database" value="Base de données" update=":#{p:component('id-panels-index')}" styleClass="#{beanRequeteur.ecran == 'basededonnees' ? 'bouton-selectionne' : null}">
								<f:setPropertyActionListener target="#{beanRequeteur.ecran}" value="basededonnees" />
							</p:menuitem>
							<p:menuitem icon="requete" value="Requete" update=":#{p:component('id-panels-index')}" styleClass="#{beanRequeteur.ecran == 'requete' ? 'bouton-selectionne' : null}">
								<f:setPropertyActionListener target="#{beanRequeteur.ecran}" value="requete" />
							</p:menuitem>
							<p:menuitem icon="informations" value="Informations : #{beanRequeteur.table.nom}" action="#{beanRequeteur.listerChamps}" styleClass="#{beanRequeteur.ecran == 'informations' ? 'bouton-selectionne' : null}" update=":#{p:component('id-panels-index')}" rendered="#{beanRequeteur.table != null}">
								<f:setPropertyActionListener target="#{beanRequeteur.ecran}" value="informations" />
							</p:menuitem>
							<p:menuitem icon="donnees" value="Données" action="#{beanRequeteur.afficherDonnees}" styleClass="#{beanRequeteur.ecran == 'donnees' ? 'bouton-selectionne' : null}" update=":#{p:component('id-panels-index')}" rendered="#{beanRequeteur.table != null}">
								<f:setPropertyActionListener target="#{beanRequeteur.ecran}" value="donnees" />
							</p:menuitem>
						</p:menubar>
					</p:outputPanel>
				</h:form>
			</p:layoutUnit>

			<p:layoutUnit position="center">
				<h:panelGroup id="id-panels-index">

					<p:messages autoUpdate="true" />

					<h:form rendered="#{beanRequeteur.ecran == 'basededonnees'}">
						<p>
							<h:panelGrid columns="2">
								<h:outputText value="#{msg['libelle.username']} : " styleClass="bold" />
								<h:outputText value="#{beanRequeteur.informationBaseDeDonnees.session.utilisateur}" />
								<h:outputText value="Base de données : " styleClass="bold" />
								<h:outputText value="#{beanRequeteur.informationBaseDeDonnees.nom} #{beanRequeteur.informationBaseDeDonnees.version}" />
								<h:outputText value="#{msg['libelle.driver']} : " styleClass="bold" />
								<h:outputText value="#{beanRequeteur.informationBaseDeDonnees.driver.nom}" />
								<h:outputText value="#{msg['libelle.connecteur']} : " styleClass="bold" />
								<h:outputText value="#{beanRequeteur.informationBaseDeDonnees.driver.connecteur}" />
								<h:outputText value="Auto-commit ? : " styleClass="bold" />
								<h:outputText value="#{beanRequeteur.informationBaseDeDonnees.autoCommit}" />
							</h:panelGrid>
						</p>
						<p>
							<p:fieldset legend="Liste des mots clés SQL" toggleable="true" collapsed="true">
								<p:dataGrid columns="10" var="motCleSql" value="#{beanRequeteur.informationBaseDeDonnees.motClesSql}">
									<h:outputText value="#{motCleSql}" />
								</p:dataGrid>
							</p:fieldset>
						</p>
						<p>
							<p:fieldset legend="Fonctions Date/Heure" toggleable="true" collapsed="true">
								<p:dataGrid columns="10" var="funcDateHeure" value="#{beanRequeteur.informationBaseDeDonnees.fonctionsDateHeure}">
									<h:outputText value="#{funcDateHeure}" />
								</p:dataGrid>
							</p:fieldset>
						</p>
					</h:form>

					<h:form rendered="#{beanRequeteur.ecran == 'requete'}">
						<p:fieldset toggleable="true" legend="Ecriture de la requete">
							<p>
								<p:commandLink action="#{beanRequeteur.executerRequete(beanRequeteur.requete)}" update="id-panel-tableau-resultat">
									<p:graphicImage value="/resources/images/icones/execute.png" style="padding-right: 3px; padding-left: 3px; vertical-align: middle;" />
									<h:outputText value="Executer la requete" />
								</p:commandLink>
								<p:commandLink action="#{beanRequeteur.executerScript(beanRequeteur.requete)}" update="id-panel-tableau-resultat">
									<p:graphicImage value="/resources/images/icones/execute.png" style="padding-right: 3px; padding-left: 3px;vertical-align: middle;" />
									<h:outputText value="Executer le script" />
								</p:commandLink>
							</p>
							<pe:codeMirror id="id-requete-sql" mode="css" widgetVar="requeteSql" theme="eclipse" value="#{beanRequeteur.requete}" lineNumbers="true" completeMethod="#{beanRequeteur.complete}" lineWrapping="true" extraKeys="{'Ctrl-Space':function(cm){requeteSql.complete();}}" global="false" gutter="0" />
						</p:fieldset>
						<p:separator />
						<h:panelGroup id="id-panel-tableau-resultat">
							<h:panelGroup rendered="#{!empty beanRequeteur.resultatRequete}">

								<h:panelGroup rendered="#{beanRequeteur.resultatRequete.type == 'script'}">
									<p:dataTable var="requeteUpdate" value="#{beanRequeteur.resultatRequete.listeRequete}" styleClass="width100">
										<p:column>
											<f:facet name="header">
												<h:outputText value="Requete" />
											</f:facet>
											<h:outputText value="#{requeteUpdate.requete}" />
										</p:column>
										<p:column>
											<f:facet name="header">
												<h:outputText value="Nombre d'occurences" />
											</f:facet>
											<h:outputText value="#{requeteUpdate.nombreOccurence}" />
										</p:column>
										<p:column>
											<f:facet name="header">
												<h:outputText value="Durée" />
											</f:facet>
											<h:outputText value="#{requeteUpdate.duree/1000} s" />
										</p:column>
									</p:dataTable>
								</h:panelGroup>

								<p:panel rendered="#{beanRequeteur.resultatRequete.type != 'script'}">
									<h:panelGrid columns="2">
										<h:outputText value=" Nombre d'occurence : " styleClass="center" />
										<h:outputText value="#{beanRequeteur.resultatRequete.nombreOccurence}" />
										<h:outputText value=" Durée : " styleClass="center" />
										<h:outputText value="#{beanRequeteur.resultatRequete.duree/1000} s" />
									</h:panelGrid>
								</p:panel>

								<p:dataTable widgetVar="datatableDonnees" value="#{beanRequeteur.resultatRequete.valeurs}" var="valeur" styleClass="width100" rendered="#{beanRequeteur.resultatRequete.type == 'select'}" paginatorAlwaysVisible="false" rows="50" paginator="true" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
									currentPageReportTemplate="Enregistrements {startRecord} - {endRecord} sur {totalRecords}, Page {currentPage} sur {totalPages}" emptyMessage="Aucune données">
									<p:columns value="#{beanRequeteur.resultatRequete.champs}" var="champ" sortBy="#{valeur[champ]}">
										<f:facet name="header">
											<h:outputText value="#{champ}" />
										</f:facet>
										<h:outputText value="#{valeur[champ]}" style="white-space: nowrap" escape="false" />
									</p:columns>
								</p:dataTable>
							</h:panelGroup>
						</h:panelGroup>
					</h:form>

					<h:form rendered="#{beanRequeteur.ecran == 'informations'}">
						<p:dataTable value="#{beanRequeteur.table.listeChamp}" var="champ" styleClass="width100" rendered="#{!empty beanRequeteur.table}">
							<p:column style="width: 1%" styleClass="center" sortBy="#{champ.position}">
								<f:facet name="header">
									<h:outputText value="POSITION" />
								</f:facet>
								<h:outputText value="#{champ.position}" />
							</p:column>
							<p:column style="width: 1%" styleClass="center">
								<f:facet name="header">
									<h:outputText value="CONTRAINTE" />
								</f:facet>
								<h:panelGroup>
									<p:graphicImage value="/resources/images/icones/pk.png" rendered="#{champ.primary}" title="Clé primaire" />
									<p:commandLink styleClass="no-border" oncomplete="dialogInfoPk.show()" update=":formDialogInfoPk">
										<p:graphicImage value="/resources/images/icones/fk.png" rendered="#{!empty champ.cleEtrangere}" title="Clé étrangère" />
										<f:setPropertyActionListener target="#{beanRequeteur.cleEtrangere}" value="#{champ.cleEtrangere}" />
									</p:commandLink>
								</h:panelGroup>
							</p:column>
							<p:column sortBy="#{champ.nom}">
								<f:facet name="header">
									<h:outputText value="NOM" />
								</f:facet>
								<h:outputText value="#{champ.nom}" />
							</p:column>
							<p:column styleClass="center" sortBy="#{champ.type}">
								<f:facet name="header">
									<h:outputText value="TYPE" />
								</f:facet>
								<h:outputText value="#{champ.type}" />
							</p:column>
							<p:column style="width: 1%" styleClass="center" sortBy="#{champ.taille}">
								<f:facet name="header">
									<h:outputText value="TAILLE" />
								</f:facet>
								<h:outputText value="#{champ.taille}" />
							</p:column>
							<p:column style="width: 1%" styleClass="center" sortBy="#{champ.nullable}">
								<f:facet name="header">
									<h:outputText value="NULLABLE" />
								</f:facet>
								<h:outputText value="#{champ.nullable}" />
							</p:column>
							<p:column styleClass="center" sortBy="#{champ.valeurParDefaut}">
								<f:facet name="header">
									<h:outputText value="DEFAUT" />
								</f:facet>
								<h:outputText value="#{champ.valeurParDefaut}" />
							</p:column>
							<p:column sortBy="#{champ.commentaire}">
								<f:facet name="header">
									<h:outputText value="COMMENTAIRE" />
								</f:facet>
								<h:outputText value="#{champ.commentaire}" />
							</p:column>

						</p:dataTable>
					</h:form>

					<h:form rendered="#{beanRequeteur.ecran == 'donnees'}">
						<h:panelGroup id="id-panel-tableau-resultat">
							<p:dataTable value="#{beanRequeteur.resultatDonnees.valeurs}" var="valeur" styleClass="width100" rendered="#{!empty beanRequeteur.resultatDonnees}" paginatorAlwaysVisible="false" rows="50" paginator="true" paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" currentPageReportTemplate="Enregistrements {startRecord} - {endRecord} sur {totalRecords}, Page {currentPage} sur {totalPages}"
								emptyMessage="Aucune données">

								<p:columns value="#{beanRequeteur.resultatDonnees.champs}" var="champ" sortBy="#{valeur[champ]}">
									<f:facet name="header">
										<h:outputText value="#{champ}" />
									</f:facet>
									<h:outputText value="#{valeur[champ]}" style="white-space: nowrap" escape="false" />
								</p:columns>

							</p:dataTable>
						</h:panelGroup>
					</h:form>
				</h:panelGroup>
			</p:layoutUnit>
		</p:layout>

	</ui:define>

	<ui:define name="dialog">
		<h:form id="formDialogInfoPk">
			<p:dialog widgetVar="dialogInfoPk" modal="true" resizable="false" closable="true">
				<h:panelGrid columns="2">
					<h:outputText value="Nom de la contrainte : " styleClass="bold" />
					<h:outputText value="#{beanRequeteur.cleEtrangere.nom}" />
					<h:outputText value="Champ : " styleClass="bold" />
					<h:outputText value="#{beanRequeteur.cleEtrangere.champ}" />
					<h:outputText value="Table cible : " styleClass="bold" />
					<h:outputText value="#{beanRequeteur.cleEtrangere.refTable}" />
					<h:outputText value="Champ cible : " styleClass="bold" />
					<h:outputText value="#{beanRequeteur.cleEtrangere.refChamp}" />
				</h:panelGrid>
			</p:dialog>
		</h:form>
	</ui:define>

</ui:composition>